#ifndef INC_MODEL_ATOM_H
#define INC_MODEL_ATOM_H

#include <string>

/**
 * FDMDE internal representation of an atom
 */
struct Atom
{
    Atom(const Atom& other)
        : id(other.id), fqn(other.fqn), x(other.x), y(other.y), z(other.z)
    {}

    Atom(const int& id, const std::string fqn, const float& x, const float& y, const float& z)
        : id(id), fqn(fqn), x(x), y(y), z(z)
    {}

    Atom* clone() const
    {
        return new Atom(*this);
    }

    int id;
	 // Fully qualified name. Unique id for an atom in a residue (i.e. you could
	 // find two atoms of type "C" but both of them will have != fqn
	 const std::string fqn;
    float x, y, z;
};

#endif /* INC_MODEL_ATOM_H */
